package NiuKe;

import java.util.Scanner;


/**
 * 小美是美团仓库的管理员，她会根据单据的要求按顺序取出仓库中的货物，
 * 每取出一件货物后会把剩余货物重新堆放，使得自己方便查找。已知货物入
 * 库的时候是按顺序堆放在一起的。如果小美取出其中一件货物，则会把货物
 * 所在的一堆物品以取出的货物为界分成两堆，这样可以保证货物局部的顺序
 * 不变。
 * 已知货物最初是按 1~n 的顺序堆放的，每件货物的重量为 w[i] ,小美会
 * 根据单据依次不放回的取出货物。请问根据上述操作，小美每取出一件货物之后，
 * 重量和最大的一堆货物重量是多少？
 *
 */
public class WarehouseManagement {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] cargos = new int[n];
        int[] gets = new int[n];
        for (int i = 0; i < n; i++) {
            int val = scanner.nextInt();
            cargos[i] = val;
        }
        for (int i = 0; i < n; i++) {
            int val = scanner.nextInt();
            gets[i] = val;
        }
        for (int i = 0; i < n; i++) {
            System.out.println(solution(cargos, gets[i] - 1));
        }
    }
    public static int solution(int[] cargos,int getPosition){
        int left = -10;
        int right = cargos.length + 10;
        cargos[getPosition] = -10;
        if(getPosition < cargos.length - 1){
            right = getPosition + 1;
        }
        if(getPosition > 0){
            left = getPosition - 1;
        }
        int totalWeightL = 0;
        int totalWeightR = 0;
        while (left >= 0){
            if(cargos[left] > 0) totalWeightL += cargos[left];
            left--;
        }
        while (right < cargos.length){
            if(cargos[right] > 0) totalWeightR += cargos[right];
            right++;
        }

        return totalWeightL <= totalWeightR ? totalWeightR :  totalWeightL;
    }
}
